Monte Carlo 仿真与 TSMC PDK model section
解析 TSMC PDK 中 ttg_localmc / ssg_localmc / globalmc_localmc / localmconly 等 MC model section 的含义,以及 Cadence ADE 中 Process / Mismatch / All 的对应关系。
核心模型:一个公式分清三类变化
| 项 | 含义 |
|---|---|
| 这颗 die / 这轮 MC 中所有同类器件共同的工艺偏移(global / process variation) | |
| 第 |
|
| TT/SS/FF/FS/SF corner | 人为定义的代表性工艺点,不是随机抽样 |
Spectre 的 ADE Monte Carlo Variation 即按此划分:
| ADE Variation | Global | Local |
|---|---|---|
| Process | ✓ | × |
| Mismatch | × | ✓ |
| All | ✓ | ✓ |
Model section 速查表
| Section | 本质 | Global | Local | 典型用途 |
|---|---|---|---|---|
top_tt |
固定 TT corner | TT | 无 | nominal / PVT |
top_ss |
固定 SS corner | SS | 无 | slow corner |
top_sf_tr_tc / top_ss_tr_tc |
固定 SF / SS corner | SF / SS | 无 | skew corner |
top_localmconly |
TT 附近 local MC | 不随机 | ✓ | 纯 mismatch |
top_ttg_localmc |
TT 固定 + local MC | TT | ✓ | TT 下 mismatch |
top_ssg_localmc |
SS 固定 + local MC | SS | ✓ | SS 下 mismatch |
top_fsg_tr_tc_localmc |
FS 固定 + local MC | FS | ✓ | skew corner mismatch |
top_sfg_tr_tc_localmc |
SF 固定 + local MC | SF | ✓ | skew corner mismatch |
top_globalmc_localmc |
Global MC + Local MC | 随机 | 随机 | 全统计 / yield |
ttg_localmc 里的 g ≠ "再做一次 global Monte Carlo"。g 指 global process 固定在某个 corner(TT/SS/FS/SF),再叠加 local mismatch。global 本身也随机的只有 globalmc_localmc。
各 section 逐个解读
localmconly ≈ TT + local MC
工艺中心保持 TT,只模拟器件间 mismatch。回答:"nominal 工艺下,本应相同的两个器件会差多少?"
适合:差分对 input offset、current mirror mismatch、bandgap ΔVBE / resistor-ratio、comparator offset、SRAM read/write margin、DAC unit-element、sense amplifier mismatch。
⚠️ 注意:MC 的 Mismatch 只描述随机 local variation,不含 layout gradient、WPE、LOD、不对称走线等系统性失配。
ttg_localmc = TT 固定 corner + local MC
物理上与 localmconly 很接近(同为 TT 中心 + local MC),区别在命名逻辑:显式声明 global 锁死在 TT,同一轮 MC 内 global 不会在 SS↔TT↔FF 之间漂移。
回答:"典型工艺 TT 下,我的 offset σ 是多少?"(如 comparator:TT nominal 时
ssg_localmc = SS 固定 corner + local MC
与 ttg_localmc 唯一区别:global center 换成 SS。同一轮 MC 里整个电路处于 SS 工艺背景,再叠加各器件随机 mismatch。
回答:"到了 SS 工艺以后再叠加 mismatch,会不会出问题?"——与 ttg 是两个不同的问题。mismatch 本身的统计特性变化未必大,但电路对 mismatch 的灵敏度会变(如 SS 下
fsg / sfg_tr_tc_localmc = FS / SF skew corner + local MC
FS/SF 是 N/P 两类 MOS 一快一慢的 skew corner(本 PDK 中第一位对应 NFET 还是 PFET,以 model guide 为准)。N/P strength ratio(
- inverter switching threshold、level shifter、latch
- SRAM、comparator、sense amplifier
- cross-coupled structure、digital timing
FS 与 SF 必须成对看:例如 FS 最差 read、SF 最差 write(或相反),不能只凭 TT 的 MC 判断。
globalmc_localmc = 完整模型
每次 MC 先随机抽这颗"虚拟 die"的 global process(偏 slow / 偏 fast / 接近 typical),再叠加各器件 local 随机,对应 ADE 的 All。
| Global | Local | |
|---|---|---|
ttg_localmc |
锁死 TT | MC |
globalmc_localmc |
MC 随机 | MC 随机 |
回答:"从生产统计角度,global process + mismatch 同时存在时,spec 分布 / yield 是多少?"
tr_tc 是什么
top_sf_tr_tc、top_fsg_tr_tc_localmc 中的 tr / tc 不是 MOS corner,大概率是 passive corner 的独立指定(typical resistor / typical capacitor)。结构应理解为:
FS global MOS corner + 指定 R corner(tr) + 指定 C corner(tc) + local mismatch MC
而不是四种 Monte Carlo 同时叠加。
tr/tc 是 PDK-specific 命名,不同 node / model release 可能不同。不要仅凭缩写写进 signoff 文档,必须查对应版本的 Model User Guide / Monte Carlo Guide / Model Corner Definition。
ADE Variation 与 model section 的组合(易踩坑)
foundry model section 自己决定哪些 variation 真正启用:
- 选了
ttg_localmc,global 已固定为 TT,即使 ADE 中选 Process / All,最终行为仍受 section 定义约束; - 有些 foundry model 要求特定的
All设置,最终以该 PDK 的 Monte Carlo guide 为准。
Corner ≠ Monte Carlo(signoff 思路)
| 目标 | |
|---|---|
| Corner | 验证设计在预定义极端条件下还工作不工作 |
| MC | 得到随机制造分布下的统计特性与 yield |
推荐流程(不要只跑 globalmc_localmc 替代 corner):
PVT corners
↓ 找出 worst corners
worst corner + local MC(ssg / fsg / sfg_localmc)
↓
global + local MC(统计 / yield)
一句话记忆版
localmconly = TT + 器件随机失配
ttg_localmc = TT 固定 corner + 器件随机失配
ssg_localmc = SS 固定 corner + 器件随机失配
fsg_tr_tc_localmc = FS 固定 corner + 指定 R/C corner + 器件随机失配
sfg_tr_tc_localmc = SF 固定 corner + 指定 R/C corner + 器件随机失配
globalmc_localmc = global process 随机 + 器件 local 随机
参考
- Cadence Community: Monte Carlo Simulation Global+Local vs Local and Process vs Mismatch
- EDAboard: Process corner of Resistor and capacitor
- Cadence: Accelerating Monte Carlo Analysis at Advanced Nodes